package com.cqut.mapper;

import com.cqut.VO.task.*;
import com.cqut.entity.CheckTask;
import com.cqut.entity.Task;

import java.util.List;

/**
 * <p>
 * 作业标题 Mapper 接口
 * </p>
 *
 * @author 冯永龙
 * @since 2021-06-15
 */
public interface TaskMapper {
    int createTask(Task task);

    /**
     * 根据课程id和用户类型查询该课程所有作业
     * 用户为老师时查询所有作业，为学生时查询已发布的作业
     *
     * @param id
     * @param userType
     * @return
     */
    List<TaskListVO> findAllTaskByCourseId(int id, Integer userType);

    List<StudentTaskListVO> findStudentTaskList(Integer courseId, Integer userId);

    int updateTask(Task task);

    int deleteTaskRecord(String taskId);

    int deleteTaskById(String id);

    int deleteTaskByCourseId(Integer courseId);

    int submitTask(CheckTask task);

    int updateTaskSubmitStatus(Integer id);

    int deleteTaskRecordByTaskIdAndUserId(String taskId, Integer userId);

    List<Integer> getSubmitedTaskList(Integer courseId, Integer userId);

    List<Integer> getUsersIdByCourseId(Integer courseId, Integer type);

    /**
     * 获取每个作业的学生人数
     *
     * @param courseId
     * @return
     */
    List<TaskStudentNumberVO> getTaskTotalStudentNumber(Integer courseId);

    /**
     * 获取作业的未提交人数
     *
     * @param courseId
     * @return
     */
    List<TaskNotSubmitNumberVO> getTaskNotSubmitedNumber(Integer courseId);

    List<TaskCheckedNumberVO> getTaskCheckedNumberList(Integer courseId);

    Integer getCourseTotalStudents(Integer courseId);

    /**
     * 根据课程id查找最近的两个作业
     *
     * @param courseId
     * @return
     */
    List<Task> findRecentTask(Integer courseId);

    Task getTaskInfo(String taskId);

    List<String> getTaskIdListByCourseId(Integer courseId);

}
